package com.niiwoo.civet.account;

import com.niiwoo.civet.account.dto.request.BillDailySheetRequestDTO;
import com.niiwoo.civet.account.dto.request.UserBillBaseRequestDTO;
import com.niiwoo.civet.account.dto.response.BillDailySheetResponseDTO;
import com.niiwoo.civet.account.dto.response.NiiwooBillRespDTO;
import com.niiwoo.civet.account.dto.response.UserBillBaseResponseDTO;
import com.niiwoo.tripod.provider.dto.response.PageResponseDTO;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Author Jaylin
 * @Date 2018-05-16
 * @Description 用户账单dubbo服务接口
 */
public interface BillBaseDubboService {

    /**
     * 按照条件获取billBase表数据(分页)
     * @param requestDTO
     * @return
     */
    default PageResponseDTO<UserBillBaseResponseDTO> pageUserBillBaseList(UserBillBaseRequestDTO requestDTO) {
        throw new UnsupportedOperationException("unimplemented");
    }

    /**
     * 按照条件获取billBase表数据
     * @param requestDTO
     * @return
     */
    default List<UserBillBaseResponseDTO> listBillBaseList(UserBillBaseRequestDTO requestDTO) {
        throw new UnsupportedOperationException("unimplemented");
    }


    /***
     * 查询BillBase信息
     * @param userId 用户id
     * @param billBaseId UserBillBase的id
     * @return
     */
    default UserBillBaseResponseDTO queryUserBillBase(String userId, Long billBaseId) {
        throw new UnsupportedOperationException("unimplemented");
    }

    /***
     * 查询退款的账单
     * @param userId 用户id
     * @param billBaseId UserBillBase的id
     * @return
     */
    default List<UserBillBaseResponseDTO> queryBackSourceUserBillBases(String userId, Long billBaseId) {
        throw new UnsupportedOperationException("unimplemented");
    }


    /**
     *根据billBaseID获取账单详情记录
     * @return
     */
    default List<NiiwooBillRespDTO> listBillListByBillBaseId(Long billBaseId, String userId) {
        throw new UnsupportedOperationException("unimplemented");
    }


    /**
     * 统计收支合计
     * @param requestDTO
     * @return
     */
    default BigDecimal totalAmount(UserBillBaseRequestDTO requestDTO) {
        throw new UnsupportedOperationException("unimplemented");
    }

    /**
     * 查询日账单（提供数据给金融办）
     * @return
     */
    default List<BillDailySheetResponseDTO> getBillDailySheet(BillDailySheetRequestDTO billDailySheetRequestDTO){
        throw new UnsupportedOperationException("unimplemented");
    }
}
